package com.lzh.others.leetcode;

import java.util.HashSet;
import java.util.Set;

/*给定一个字符串 s ，请你找出其中不含有重复字符的 最长子串 的长度。*/
/* 滑动窗口
*  定义两个指针
*  一个用来指定开始的坐标，
*  一个进行向右移动找重
* */
public class LeetCode03 {

    public static int lengthOfLongestSubstring(String s){
        int start=0,index=-1;
        int max=0,temp=0;
        Set<Character> occ = new HashSet<>();
        char[] chars = s.toCharArray();
        for (int i = 0 ; i < s.length() ; i ++) {
            // 开始指针向右移动,移除前一个字符
            if ( i != 0) {
                occ.remove(chars[i - 1]);
            }
            // 不断的右移inex指针，每次存入值，判断中加入对重复值的判断
            while (index + 1 < s.length() && !occ.contains(chars[index+1])){
                occ.add(chars[index+1]);
                index++;
            }
            // 第i到index个字符是一个最长的无重复字符子串
            max = Math.max(max,index-i+1);
        }
        return max;
    }

    public static void main(String[] args) {
        String s = "abcc";
        int max = lengthOfLongestSubstring(s);
        System.out.println(max);
    }
}
